// 数据转换工具函数

/**
 * 将原始数据转换为图表所需格式
 * @param {Object} data 原始数据
 * @param {Number} columnIndex 需要获取的列索引
 * @returns {Array} 转换后的数据数组
 */
export function splitData(data, columnIndex) {
  if (!data || !data.klines) return [];
  return data.klines.map(item => item.split(',')[columnIndex]);
}

/**
 * 计算累计值数组
 * @param {Array} array 原始数据数组
 * @returns {Array} 累计值数组
 */
export function calculateAccumulatedArray(array) {
  return array.reduce((acc, val, index) => {
    const num = parseFloat(val);
    const prevSum = index > 0 ? parseFloat(acc[index - 1]) : 0;
    const currentSum = (prevSum + num).toFixed(2);
    acc.push(currentSum);
    return acc;
  }, []);
}

/**
 * 格式化日期
 * @param {String} fmt 日期格式
 * @param {Date} date 日期对象
 * @returns {String} 格式化后的日期字符串
 */
export function dateFormat(fmt, date) {
  const opt = {
    'Y+': date.getFullYear().toString(),
    'm+': (date.getMonth() + 1).toString(),
    'd+': date.getDate().toString(),
    'H+': date.getHours().toString(),
    'M+': date.getMinutes().toString(),
    'S+': date.getSeconds().toString(),
  };
  
  let ret;
  for (let k in opt) {
    ret = new RegExp('(' + k + ')').exec(fmt);
    if (ret) {
      fmt = fmt.replace(
        ret[1],
        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
      );
    }
  }
  return fmt;
}

/**
 * 处理颜色显示
 * @param {Number} num 数值
 * @param {Number} type 类型
 * @returns {String} 颜色值
 */
export function colorDeal(num, type) {
  if (type === 1) {
    if (num > 55) return 'rgb(233, 64, 65)';
    if (num < 40) return 'rgb(5, 166, 135)';
    return '';
  }
  return '';
}